System and method for controlling and determining accuracy of activity duration keys

ABSTRACT

Systems, methods, and other embodiments associated with determining a configuration accuracy for activity duration keys are described. In one embodiment, a method includes comparing a duration time of an activity duration key to each reported time duration for completing selected activities from activity records and determining a difference associated to each activity record. An accuracy value is assigned to each activity record based on the difference, wherein the accuracy value indicates either a good (accurate) value or a bad (inaccurate) value. The configuration accuracy of the activity duration key is calculated based at least on a number of the activity records that were assigned the good (accurate) value relative to a number of the activity records assigned the bad (inaccurate) value.

CROSS REFERENCE TO RELATED APPLICATIONS

This disclosure claims the benefit of U.S. patent application Ser. No.16/357,665 filed Mar. 19, 2019, titled “System and Method forControlling and Determining Quality of Activity Duration Keys”, whichclaims the benefit of Provisional Patent Application Ser. No. 62/800,270filed Feb. 1, 2019, titled “System and Method for Controlling andDetermining Quality of Activity Duration Keys”, which is incorporated byreference herein in its entirety.

BACKGROUND

Estimating activity durations is one part of project management. Itinvolves an estimation of the amount of time required by a certainproject activity given available resources. Activity duration keys havebeen used to accurately estimate durations of future activities. Oneproblem is that there is no good way for customers to know how good oraccurate the activity duration key is.

Estimating activity durations is one part of project management. Itinvolves an estimation of the amount of time required by a certainproject activity given available resources. To learn activity duration,it is required to categorize activities, by learning which groups aresimilar, assuming that activities within each of the groups are similarby nature, and have a similar volume of work. Therefore, these types ofactivities should have a similar time duration. The duration estimationinvolves a high volume of input and output data, and also the estimationaccuracy provided by one or another grouping method changes over timeafter more data is gathered. Therefore, one problem is that there is nogood way for customers to know how good or accurate time durationsand/or grouping approaches are compared to other possible time durationsand/or grouping approaches.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of the specification, illustrate various systems, methods, andother embodiments of the disclosure. It will be appreciated that theillustrated element boundaries (e.g., boxes, groups of boxes, or othershapes) in the figures represent one embodiment of the boundaries. Insome embodiments one element may be implemented as multiple elements orthat multiple elements may be implemented as one element. In someembodiments, an element shown as an internal component of anotherelement may be implemented as an external component and vice versa.Furthermore, elements may not be drawn to scale.

FIG. 1 illustrates one embodiment of a method associated a systematicdetermination of quality for duration keys.

FIG. 2 illustrates an example table of activity records and duration keyproperties for determining key quality associated with FIG. 1.

FIG. 3 illustrates an embodiment of a special purpose computing systemconfigured with the example systems and/or methods disclosed.

DETAILED DESCRIPTION

Computer-implemented systems and methods are described herein thatcontrol Activity Duration Keys and automatically compute an accuracy orquality of Activity Duration Keys based on how accurately each key isconfigured to estimate a time duration for different types ofactivities. In one embodiment, the accuracy/quality of a duration key ishigher/better (more accurate) if a difference between an estimatedduration of an activity and a reported duration of the activity issmaller and vice versa. In one embodiment, the activity duration key isused as a grouping technique to group similar activities together basedon similar properties. Which activities are grouped as being similar aredefined by configuration properties in the activity duration key. Thus,in one embodiment, the quality of the duration key is also affected byhow well the duration key groups activities as being similar. However,the present system and method is applicable to other grouping techniquesthat can be used to identify activities as being similar and group thesimilar activities.

The computation of the qualities of all configured keys (irrespective ofwhether they were active or not) provides a clear determination on howaccurate each configured key is, which previous systems could not do.The system can then identify and select the most accurate key for eachtype of activity. The selected key for each activity may then betransmitted to customers allowing the customers to make an informeddecisions (backed by data) on which key should be used for activityduration estimations in subsequent calculations. Implementing anaccurate key (as identified and recommended) that replaces an inaccuratekey will cause a reduction is errors in future time estimationcalculations by the system.

In order to facilitate grouping of activities that are similar innature, for duration calculation purposes, an activity duration key canbe defined and configured. In one embodiment, the activity duration keymay be configured via a graphical user interface by an administrator.The activity duration key is defined with or otherwise configured with aconfiguration of properties or formula, which is a selected combinationof one or more properties associated with an activity. These propertiesmay also be referred to as grouping conditions. Based on values of theconfiguration properties (grouping conditions) that are defined by thekey, activities that have properties that match the configurationproperties defined in the key are identified as similar activities andare grouped together. This is further described with reference to FIG.2. Durations of completed activities that fall under the same group areused to estimate the duration of future activities.

Configuring an appropriate activity duration key determines the accuracyin estimating durations of future activities. A problem is thatpreviously there was no way for customers to know how good theconfigured key was. Customers have no way to identify if an active keywas the most effective one or if multiple keys should be configured toperform a “what if” analysis using production data.

Prior systems and techniques did not provide a way to determine howaccurate or inaccurate a configured key was. In one embodiment, thepresent system performs learning and analysis on duration keys, andprovides an ability to determine key quality when multiple keys areconfigured. Without the present system and method, customers wouldcontinue to use a configured key (that was configured based on a gutfeeling rather than backed up by any data) even if key produces sub-parestimations, since previously there was no good way to compare theperformances of different keys.

How a duration key is configured and how a key generates an estimatedtime duration for an activity is not the focus of this disclosure. Thepresent systems and methods involve determining a quality of a durationkey that has been configured (e.g., determining the quality/accuracy ofthe configuration) and identifying the most accurate duration key from agroup of keys. Inaccurate keys are also identified in the process ascompared to other duration keys. In one embodiment, the quality (alsoreferred to as accuracy or configuration accuracy) of a duration key isbased on the quality of configuration properties defined by the durationkey as described below.

In one embodiment, a graphical user interface is configured andgenerated that displays a group of configured activity keys that areavailable to the system. The GUI allows for the selection and/orchanging of an “active” key. The “active” key is one key from the groupof keys that is selected to be used in estimating durations ofactivities. A key quality analysis is executed on the activity keys todetermine an accuracy value/quality value for each key (as describedbelow). The terms quality and accuracy are interchangeable. The GUIprovides a visual comparison of different keys making it easier tovisually see the quality of the different keys. The GUI also providesinformation about the potential impact of a key before the key isactivated for estimating future time durations for an activity.

With reference to FIG. 1, a computer-implemented method 100 isillustrated that describes one embodiment for determining qualities ofactivity duration keys (e.g., determine the accuracy of theconfiguration of the activity duration keys). The method 100 isperformed by at least a processor of a computer system that accesses andinteracts with memories and/or data storage devices. For example, theprocessor accesses and reads/writes data to the memory to perform theactions of FIG. 1.

Method 100 executes with a presumption that one or more activityduration keys have been configured and are stored in a data structure(e.g., a data record(s)). Also, one or more data records (activityrecords) should exist that contain data for specified activities thatwere performed in the past.

For example, for an activity type 1, there may be ten (10) activityrecords that indicate that the activity was performed ten (10) times,one record per occurrence of the activity. Each activity record mayidentify the activity type, activity ID, date the activity wasperformed, and/or an observed/recorded time duration for the activity.The observed time duration represents an amount of time that was neededto complete the activity as measured and/or recorded by an administratoror other field resource. Each activity record represents a differentinstance of the activity that was performed and recorded on a differentdate and/or performed by different resources or people.

In general, the activity duration key is used to group similaractivities and estimate the time duration of an activity based onproperties of the activity. If the activity is, for example, installinga cable modem, various properties are associated with such an activitythat represent what steps are performed and how long the steps take toperform. The steps may for example include travelling time, installingwires in a location, setting up the cable modem, installing software inthe cable modem, resolving a specified problem, activating and testingthe cable modem. Complexity of steps and experience level of a personperforming the steps may also be factors to consider, which may affect afinal estimated time that is calculated using the activity duration key.

Each activity may also have multiple activity duration keys that areconfigured to estimate the time duration differently based on differentcombinations of the activity properties that are considered in thecalculations. Thus each activity duration key can designate differentactivities to be grouped together (as being similar) and generate adifferent time estimate for the group or same activity type.

In other words, the activity duration key includes configurationproperties that define one or more grouping conditions/properties fordetermining which activity types are grouped as being similaractivities. The configuration properties (grouping conditions) of a keymay be programmatic statements and/or functions that define whatconditions/properties an activity must match in order to be grouped withthat key. How accurate the configuration properties (groupingconditions) are, meaning how accurately the key groups activities thatare actually similar, is one factor to determine the accuracy of thekey. For example, if the configuration properties of a key causedissimilar activities to match the grouping conditions, then the qualityor accuracy of the key will be poor or inaccurate.

The method of FIG. 1 describes a process for determining aquality/accuracy of each activity duration key (based on historicaldata) to determine which key is most accurate in generating a timeestimate for the activity. This allows the system to control, recommend,and/or select one of the duration keys to be used in future estimationsof time for the activity type that will produce more accurateestimations as compared to the other duration keys. The process alsodetermines and identifies which duration keys are inaccuratelyconfigured, which should not be used (e.g., should be deleted) and/orshould be reconfigured.

In one embodiment, for each configured duration key, the systemcalculates the quality/accuracy of the key based on how accurate theestimation of activity durations have been or would have been, if therespective key was used for the estimation calculations. This is donebased on the following steps with reference to FIG. 1.

At 110, an activity duration key is selected for analysis. The activityduration key has a configuration that includes parameters that identifywhich activities (activity types) are grouped by the key as beingsimilar, and includes an estimated duration (activity key value) foreach activity type that is similar. The estimated duration that isgenerated using the selected key is also called an activity key value,which represents an estimated amount of time for performing the activitytype (e.g., an estimated duration is 35 minutes or some other timevalue). The activity types that are grouped by the duration key areidentified and corresponding activity records are retrieved from adatabase or other data structure. The activity records include a timeduration that was observed for performing the corresponding activity andrecorded in the activity record.

At 120, the time durations reported for completed past activities arecompared with the estimated duration for that activity using the key. Adifference between the estimated duration and each reported timeduration is determined. At 130, the difference is compared to athreshold value.

If the difference between the estimated time duration and reported timeduration is less than the threshold value, the method goes to block 140and the system designates the estimation for the corresponding activityrecord as being “good” or otherwise “accurate” (a good value). Thismeans that the estimated time duration was close in value to thereported time duration. This also represents that the estimated durationfrom the duration key is accurate for the corresponding activity type ofthe activity record.

The quality is considered to deteriorate as the time difference betweenthe estimated time duration and reported time duration increases. If thetime difference is larger than the threshold value, the method goes toblock 150 and the system designates the estimation as being “poor” or“bad” meaning the key is “inaccurate” for the respective activity type.In another embodiment, a third quality of “satisfactory” may beintroduced that is defined between the good and poor values using asecond threshold value for time differences.

When two thresholds are configured, three possible quality values aredefined. For example, the quality value is determined based on the firstthreshold value and the second threshold, where the quality value for aselected activity record is assigned as: (i) the good value, meaning thekey is accurate, when the time difference between the duration time ofthe activity duration key and the reported time duration for completingthe selected activity from the selected activity record is between zeroand the first threshold value; (ii) the satisfactory value, meaning anacceptable accuracy, when the time difference is between the firstthreshold value and the second threshold value; and (iii) the bad value,meaning the key is inaccurate, when the time difference is greater thansecond threshold value. The quality value may be represented in terms ofnumbers or actual words, and represents a determined accuracy of the keyfor the corresponding activity record.

At 160, a final quality (e.g., configuration accuracy) of the key iscalculated based on the number or percentage of activity records thatshowed good/accurate estimates, satisfactory/acceptable estimates, andbad/poor/inaccurate estimations relative to each other, for thatduration key. The final quality can be converted to a number value, forexample, between 0 and 5 where 0 is the lowest score (inaccurate key, orleast accurate key for its activity types) and 5 is the best score (mostaccurate key for its activity types). Of course, other ranges for thefinal quality can be used, for example, by changingcoefficients/weighting factors used in the calculation. This isdescribed below.

The process is repeated for other duration keys and each key is assigneda quality/accuracy value. When a quality value for multiple durationkeys or all duration keys are determined, a list of keys and theirquality/accuracy values is generated. The duration key with the highestquality value is selected by the system. The selected duration key isdetermined by the system as the key that generates the most accuratetime estimates for the corresponding set of activities that were groupedtogether as being similar. Thus, the selected duration key is determinedto have the most accurate configuration relative to the other durationkeys.

The present determination and selection is based on actual reported datarecords and thus is more accurate than previous techniques that simplyguessed which key was most accurate and which keys were inaccurate.

Furthermore, since a duration key identifies its group of activities bycoded parameters, it was not possible for a user (even when looking atthe configuration of the key) to manually identify which correspondingactivities actually matched the key. As such, the user could not findand retrieve the corresponding activity records. Thus a user could notdetermine the quality of a duration key based on historical records.Keep in mind as well that a typical database of activity records for agiven organization may have tens of thousands to millions of activityrecords making the process impossible to do manually.

After the duration key with the highest quality is identified andselected, the system then generates a recommendation to use the selectedkey (rather than using the other keys). In one embodiment, therecommendation is created by generating a visual indication of theselected duration key on a display screen and/or transmitting therecommendation electronically, via a network, to a computing device fordisplay to a selected user. The computing system includes at least onenetwork interface for connecting to the network and communicating therecommendation over the network to a selected destination address ordevice to cause the recommended duration key to be activated and used inthe system.

With reference to FIG. 2, one embodiment of a graphical user interfaceis shown with a generated table 200 of key quality analysis and qualityresults that may be generated based on the method 100 of FIG. 1. Thetable 200 will be used to describe examples that correspond to thevarious functions of method 100. For the example table 200, two selectedactivity duration keys are shown in block 205, which may have beenselected in block 105 from FIG. 1.

The table 200 shows ten (10) activity records identified by RecordNumber 210. Of course, there may be tens of thousands of activityrecords or more in a given system. Each activity record includes anumber of properties, which in the example include activity type 215,location code 220, and problem code 225. Of course, there may be manymore properties associated with an activity record but the threeexamples are chosen for simplicity and description purposes only.

The two keys being analyzed for quality are shown in block 205. ActivityDuration Key 1 has a configuration of “Activity Type (1, caseinsensitive)”. Activity Duration Key 2 has a configuration of “LocationCode (2, case insensitive), Problem code (2, case insensitive)”. Theconfiguration (the configuration properties defined in the key) is agrouping definition to identify and match which activities the keydefines as similar. In other words, the configuration properties defineone or more grouping conditions for determining which activities aregrouped as being similar activities.

The configuration identifies properties from a plurality of activitytypes, which if they match, are to be grouped as similar activities. Forkey 1, the properties are “activity type” with the parameter of “1”,which means select one (1) character (the first character) from the“activity type” and the case of the character is not relevant (“caseinsensitive”). In other words, the configuration is a programmaticstatement/condition that states activity types that have a matchingfirst character are grouped as similar activities. A result of the Key 1configuration (e.g., grouping condition) is shown in a Key 1 Value 230for each activity record. Looking at record number 1, the key value is“V” which is the first character taken from the “activity type” property215 “V-Video”. Thus, the configuration of Key 1 groups togetheractivities as similar based on their first character of “activity type”matching. In FIG. 2, based on Key 1 Value, record numbers 1, 5, and 9are similar (matching “V”), record numbers 2, 3, and 7 are similar(matching “D”), etc.

For activity duration key 2, the configuration defines its key value(e.g., grouping conditions) as “Location Code (2, case insensitive),Problem code (2, case insensitive).” This code instructs the system totake the first two (2) characters from the Location Code, and take thefirst two (2) characters from the Problem Code. The resulting Key 2Value is shown in column 235. Thus, for activity record 1, the Key 2Value is “OHBW.” This key value is then used to identify and matchactivity records that have the same Key 2 Value, which are then groupedtogether as being similar activities (e.g., similar for time durationpurposes). Key values are determined for the other activity records in asimilar manner.

Note that the grouping conditions for Key 1 have a different resultingset of what are similar activities than the grouping conditions for Key2. For example, using the configuration of Key 1, record numbers 1, 5,and 9 are grouped as similar since their Key 1 Value (column 230) is thesame matching “V.” However, using the configuration of Key 2, records 1,5, and 9 are not grouped together as similar. They each have differentKey 2 Values (column 235) that do not match.

Activity records that have the same Key Values 230 or 235 (values thatmatch) are considered similar activity types and are given the sameestimated time duration for completing the activity based on theduration key. The estimated time duration for each similar activity typeis shown in column Key 1 Estimation 240. For example, each activityrecord with a Key 1 Value of “V” (record numbers 1, 5, and 9) has a Key1 Estimation of “50” (e.g., 50 minutes or other time unit). Eachactivity record with a Key 2 Value of “CANL” has a Key 2 Estimation of“95” (e.g., 95 minutes or other time unit).

Thus each key configuration defines a group of similar activities basedon selected properties defined in the key, and has an associated timeduration estimate for completing the corresponding activities.Accordingly, each duration key may generate a different time estimatefor the same activity since each key uses different properties. As seenin table 200, for activity record 1, Key 1 has an estimation of 50 andKey 2 has an estimation of 90. The time duration estimate may begenerated based on various factors and/or formulas, which are not thesubject of this disclosure. Rather, the present system is directed todetermining the quality of the key and its estimates that have beenpreviously generated.

As shown in block 120 of FIG. 1, to determine a quality for eachactivity duration key, the system compares the estimated duration timeof the activity duration key (Key 1 Estimation, and Key 2 Estimation) toeach reported time duration for completing the selected activity fromeach of the activity records. The reported time duration for eachactivity record is shown in column 250. The activity records representpast performances of the selected activity (e.g., historical performancerecords) and how long it took to actually complete the activity. Adifference between the estimated duration and the reported duration isdetermined (e.g., by the processor accessing, retrieving, and comparingdata values from a memory).

The system assigns a quality value (e.g., accuracy value) to eachactivity record based on the difference as compared to a threshold value(as previously stated with reference to block 130 of FIG. 1). In FIG. 2,the quality value represents one of at least three accuracy valuesindicative of a good value (accurate), satisfactory value (satisfactoryaccuracy), or a poor value (inaccurate). Thus two threshold values areused in the example. A resulting quality value is shown for Key 1 incolumn 255 as “Quality Grade for Key 1” and for Key 2 is shown in column260 as “Quality Grade for Key 2.” In another embodiment, any number ofthreshold values may be used to define multiple levels of accuracyvalues.

As stated previously (block 160 in FIG. 1), the system calculates thequality of the activity duration key based at least on a number of theactivity records that were assigned the good value relative to a numberof the activity records assigned the satisfactory value, and the poorvalue. In the example, for Key 1, 6 records are “good” (equals 60%), 1record is “satisfactory” (equals 10%), and 3 records are “poor” (equals30%) out of a total of 10 records.

In one embodiment, the final quality of a key is calculated based on thefollowing formula based on total number of record counts and weightedvalue given to each value of good, satisfactory, and bad:

Final Quality of Key 1=(6*% of Good Estimations)+(4*% of SatisfactoryEstimations). This is the configuration accuracy of Key 1.

Hence, based on the data from table 200 in FIG. 2 and the number ofrecords with good and satisfactory scores out of the total number of tenrecords, the quality of Key 1=(6*60% good)+(4*10%satisfactory)=(6*0.6)+(4*0.1)=4.0. This is one example of how thequality value based on the number of activity records with the samequality value are combined to determine the final quality for the key.

The process is repeated for the other duration keys. The final qualityof Key 2=(6*40% good)+(4*20% satisfactory)=3.2. Of course, othercoefficients/weighting factors can be used instead of 6 and 4 in orderto scale the final value to different ranges. Thus the coefficients of 6and 4 are for illustrative purposes. In one embodiment, the final valuemay be limited to a selected maximum value, for example, 5. Thus, if thequality value is calculated as a value higher than 5, the final value isset at 5 so that all final values fall within a defined range of 0 to 5.

The percentage of “bad” records (inaccurate time estimate and/orgrouping definition) is not directly shown in the formula. However, thebad records are factored into the formula since the percentages of“good” and “satisfactory” records relative to the total number ofrecords changes due to the number of “bad” records. In anotherembodiment, the percentage or number of bad records may be directlyapplied to the formula.

After all the duration keys are analyzed and graded, the systemidentifies and selects a candidate duration key based on the quality(e.g., configuration accuracy) for each of the duration keys. In thisexample, Key 1 has the highest score and thus is considered to be moreaccurate than Key 2. The system selects Key 1 and generates arecommendation indicating Key 1. The recommendation is displayed on adisplay to recommend the candidate duration key for use in estimating atime duration for completing the selected activity type in futurecalculations.

Thus the system may control the selection and application of durationkeys by recommending the most accurate key for future use. This allowsthe system to control subsequent estimations for a group of activitytypes by “activating” and applying the candidate duration key toestimate future time durations for the group of activity types.

In some instances, the quality determination may result in determiningthat all duration keys have a low quality score, meaning that theduration keys are inaccurate. The recommendation may also include aninstruction to delete or reconfigure an inaccurate duration key. Theinstruction may be an instruction to configure a new duration key inorder to improve quality of the time estimations for future activitiesand/or change the grouping definition of activities that are defined assimilar. The recommendation may then be transmitted electronically toone or more selected recipients to their remote devices to notify themof the recommendation (via a message and/or a displayed notice).

Since the key configuration is a grouping definition used to identifywhich activities are grouped as “similar,” the quality of the durationkey is affected by how well the grouping definition matches activities.For example, the configuration of activity duration key 1 has a groupingdefinition that selects the first character from the “Activity Type”property (see block 205 and column 230 in FIG. 2). The activity typesthat start with “V” (e.g., “V-Video”) are thus grouped as similarbecause their first character matches.

However if another activity type exists with the type “VoIP-Voice”(Voice over IP), this would also match the definition and be grouped assimilar with “V-Video” even though these activities may not be similar.If the Reported Durations 250 for the “VoIP-Voice” records are verydifferent from the Reported Durations of the “V-Video” records, thiswould result in many more “poor” quality estimations because theestimated times would not be similar. Thus the final quality grade forthe key may result as a “poor” quality. This would then be identified bythe system and a notification may be generated and displayed/transmittedto a device to cause a reevaluation of the configuration of the key andto redefine the grouping definition.

The computation of the qualities of all configured keys (irrespective ofwhether they were active or not) provides a very clear picture on howgood each configured key is. Customers can then make an informeddecision (backed by data) on which key should be used for activityduration estimations.

In one embodiment, the present key quality system is a computing/dataprocessing system including an application or collection of distributedapplications for enterprise organizations. The applications andcomputing system may be configured to operate with or be implemented asa cloud-based networking system, a software as a service (SaaS)architecture, or other type of networked computing solution. In oneembodiment, the present key quality system is a centralized server-sideapplication that provides at least the functions disclosed herein andthat is accessed by many users via computing devices/terminalscommunicating with the computing system (functioning as the server) overa computer network.

In one embodiment, the key quality system is configured as a module forexecution on a computing system to perform the method of FIG. 1 andequivalents. The key quality module is configured as one or more programmodules stored in a non-transitory computer readable medium. The programmodules are configured with stored instructions that when executed by atleast a processor cause the computing device to perform thecorresponding function(s) as described herein.

Computing Device Embodiment

FIG. 3 illustrates an example special purpose computing device that isconfigured and/or programmed with one or more of the example systems andmethods described herein, and/or equivalents. The example computingdevice may be a computer 300 that includes a processor 302, a memory304, and input/output ports 310 operably connected by a bus 308. In oneexample, the computer 300 may include a key quality module/logic 330configured to facilitate key quality analysis and generaterecommendations as performed by the method of FIG. 1 and FIG. 2. Indifferent examples, the logic 330 may be implemented in hardware, anon-transitory computer-readable medium with stored instructions,firmware, and/or combinations thereof. While the logic 330 isillustrated as a hardware component attached to the bus 308, it is to beappreciated that in other embodiments, the logic 330 could beimplemented in the processor 302, stored in memory 304, or stored indisk 306.

In one embodiment, logic 330 or the computer is a means (e.g.,structure: hardware, non-transitory computer-readable medium, firmware)for performing the actions described. In some embodiments, the computingdevice may be a special purpose server operating in a cloud computingsystem, a server configured in a Software as a Service (SaaS)architecture, a smart phone, laptop, tablet computing device, and so on.

Describing an example configuration of the computer 300, the processor302 may be a variety of various specially programmed processorsincluding dual microprocessor and other multi-processor architectures. Amemory 304 may include volatile memory and/or non-volatile memory.Non-volatile memory may include, for example, ROM, PROM, and so on.Volatile memory may include, for example, RAM, SRAM, DRAM, and so on.

A storage disk 306 may be operably connected to the computer 300 via,for example, an input/output (I/O) interface (e.g., card, device) 318and an input/output port 310. The disk 306 may be, for example, amagnetic disk drive, a solid state disk drive, a floppy disk drive, atape drive, a Zip drive, a flash memory card, a memory stick, and so on.Furthermore, the disk 306 may be a CD-ROM drive, a CD-R drive, a CD-RWdrive, a DVD ROM, and so on. The memory 304 can store a process 314and/or a data 316, for example. The disk 306 and/or the memory 304 canstore an operating system that controls and allocates resources of thecomputer 300.

The computer 300 may interact with input/output (I/O) devices via theI/O interfaces 318 and the input/output ports 310. Input/output devicesmay be, for example, a keyboard, a microphone, a pointing and selectiondevice, cameras, video cards, displays, the disk 306, the networkdevices 320, and so on. The input/output ports 310 may include, forexample, serial ports, parallel ports, and USB ports.

The computer 300 can operate in a network environment and thus may beconnected to the network devices 320 via the I/O interfaces 318, and/orthe I/O ports 310. Through the network devices 320, the computer 300 mayinteract with a network. Through the network, the computer 300 may belogically connected to remote computers. Networks with which thecomputer 300 may interact include, but are not limited to, a LAN, a WAN,and other networks.

Definitions and Other Embodiments

In another embodiment, the described methods and/or their equivalentsmay be implemented with computer executable instructions. Thus, in oneembodiment, a non-transitory computer readable/storage medium isconfigured with stored computer executable instructions of analgorithm/executable application that when executed by a machine(s)cause the machine(s) (and/or associated components) to perform themethod. Example machines include but are not limited to a processor, acomputer, a server operating in a cloud computing system, a serverconfigured in a Software as a Service (SaaS) architecture, a smartphone, and so on). In one embodiment, a computing device is implementedwith one or more executable algorithms that are configured to performany of the disclosed methods.

In one or more embodiments, the disclosed methods or their equivalentsare performed by either: computer hardware configured to perform themethod; or computer instructions embodied in a module stored in anon-transitory computer-readable medium where the instructions areconfigured as an executable algorithm configured to perform the methodwhen executed by at least a processor of a computing device.

While for purposes of simplicity of explanation, the illustratedmethodologies in the figures are shown and described as a series ofblocks of an algorithm, it is to be appreciated that the methodologiesare not limited by the order of the blocks. Some blocks can occur indifferent orders and/or concurrently with other blocks from that shownand described. Moreover, less than all the illustrated blocks may beused to implement an example methodology. Blocks may be combined orseparated into multiple actions/components. Furthermore, additionaland/or alternative methodologies can employ additional actions that arenot illustrated in blocks. The methods described herein are limited tostatutory subject matter under 35 U.S.C § 101. It is inconsistent withthe present disclosure to interpret that any of the functions performedand/or claimed herein can be performed in the human mind or manually.

The following includes definitions of selected terms employed herein.The definitions include various examples and/or forms of components thatfall within the scope of a term and that may be used for implementation.The examples are not intended to be limiting. Both singular and pluralforms of terms may be within the definitions.

References to “one embodiment”, “an embodiment”, “one example”, “anexample”, and so on, indicate that the embodiment(s) or example(s) sodescribed may include a particular feature, structure, characteristic,property, element, or limitation, but that not every embodiment orexample necessarily includes that particular feature, structure,characteristic, property, element or limitation. Furthermore, repeateduse of the phrase “in one embodiment” does not necessarily refer to thesame embodiment, though it may.

A “data structure”, as used herein, is an organization of data in acomputing system that is stored in a memory, a storage device, or othercomputerized system. A data structure may be any one of, for example, adata field, a data file, a data array, a data record, a database, a datatable, a graph, a tree, a linked list, and so on. A data structure maybe formed from and contain many other data structures (e.g., a databaseincludes many data records). Other examples of data structures arepossible as well, in accordance with other embodiments.

“Computer-readable medium” or “computer storage medium”, as used herein,refers to a non-transitory medium that stores instructions and/or dataconfigured to perform one or more of the disclosed functions whenexecuted. Data may function as instructions in some embodiments. Acomputer-readable medium may take forms, including, non-volatile media,and volatile media. Non-volatile media may include, for example, opticaldisks, magnetic disks, and so on. Volatile media may include, forexample, semiconductor memories, dynamic memory, and so on. Common formsof a computer-readable medium may include, but are not limited to, afloppy disk, a flexible disk, a hard disk, a magnetic tape, othermagnetic medium, an application specific integrated circuit (ASIC), aprogrammable logic device, a compact disk (CD), other optical medium, arandom access memory (RAM), a read only memory (ROM), a memory chip orcard, a memory stick, solid state storage device (SSD), flash drive, andother media from which a computer, a processor or other electronicdevice can function with. Each type of media, if selected forimplementation in one embodiment, may include stored instructions of analgorithm configured to perform one or more of the disclosed and/orclaimed functions. Computer-readable media described herein are limitedto statutory subject matter under 35 U.S.C § 101.

“Logic”, as used herein, represents a component that is implemented withcomputer or electrical hardware, a non-transitory medium with storedinstructions of an executable application or program module, and/orcombinations of these to perform any of the functions or actions asdisclosed herein, and/or to cause a function or action from anotherlogic, method, and/or system to be performed as disclosed herein.Equivalent logic may include firmware, a microprocessor speciallyprogrammed with an algorithm for performing the disclosed methods, adiscrete logic (e.g., ASIC), at least one circuit, an analog circuit, adigital circuit, a programmed logic device, a memory device containinginstructions of an algorithm, and so on, any of which may be configuredto perform one or more of the disclosed functions. In one embodiment,logic may include one or more gates, combinations of gates, or othercircuit components configured to perform one or more of the disclosedfunctions. Where multiple logics are described, it may be possible toincorporate the multiple logics into one logic. Similarly, where asingle logic is described, it may be possible to distribute that singlelogic between multiple logics. In one embodiment, one or more of theselogics are corresponding structure associated with performing thedisclosed and/or claimed functions. Choice of which type of logic toimplement may be based on desired system conditions or specifications.For example, if greater speed is a consideration, then hardware would beselected to implement functions. If a lower cost is a consideration,then stored instructions/executable application would be selected toimplement the functions. Logic is limited to statutory subject matterunder 35 U.S.C. § 101.

An “operable connection”, or a connection by which entities are“operably connected”, is one in which signals, physical communications,and/or logical communications may be sent and/or received. An operableconnection may include a physical interface, an electrical interface,and/or a data interface. An operable connection may include differingcombinations of interfaces and/or connections sufficient to allowoperable control. For example, two entities can be operably connected tocommunicate signals to each other directly or through one or moreintermediate entities (e.g., processor, operating system, logic,non-transitory computer-readable medium). Logical and/or physicalcommunication channels can be used to create an operable connection.

“User”, as used herein, includes but is not limited to one or morepersons, computers or other devices, or combinations of these.

While the disclosed embodiments have been illustrated and described inconsiderable detail, it is not the intention to restrict or in any waylimit the scope of the appended claims to such detail. It is, of course,not possible to describe every conceivable combination of components ormethodologies for purposes of describing the various aspects of thesubject matter. Therefore, the disclosure is not limited to the specificdetails or the illustrative examples shown and described. Thus, thisdisclosure is intended to embrace alterations, modifications, andvariations that fall within the scope of the appended claims, whichsatisfy the statutory subject matter requirements of 35 U.S.C. § 101.

To the extent that the term “includes” or “including” is employed in thedetailed description or the claims, it is intended to be inclusive in amanner similar to the term “comprising” as that term is interpreted whenemployed as a transitional word in a claim.

To the extent that the term “or” is used in the detailed description orclaims (e.g., A or B) it is intended to mean “A or B or both”. When theapplicants intend to indicate “only A or B but not both” then the phrase“only A or B but not both” will be used. Thus, use of the term “or”herein is the inclusive, and not the exclusive use.

What is claimed is:
 1. A non-transitory computer-readable medium storingcomputer-executable instructions that when executed by at least aprocessor of a computer cause the computer to: generate, on a displayscreen, a graphical user interface and display one or more activityduration keys; wherein each activity duration key includes aconfiguration with (i) configuration properties for grouping activitytypes as being similar activities, and (ii) an estimated duration timefor each of the activity types that is an estimated time to complete arespective activity type; for a given activity duration key from the oneor more activity duration keys, retrieve, from a database, a set ofactivity records associated with a plurality of activity types that aregrouped as being similar by the configuration properties of the givenactivity duration key, wherein each activity record identifies areported time duration for completing a corresponding activity in a pastevent; compare the estimated duration time of the given activityduration key to each reported time duration for completing thecorresponding activity from the activity records and determining a timedifference associated to each activity record; assign an accuracy valueto a selected activity record based on the time difference as: (i) anaccurate value when the time difference meets a first threshold value;and (ii) an inaccurate value when the time difference does not meet thefirst threshold value; determine a configuration accuracy of theconfiguration of the given activity duration key based at least on anumber of the activity records that were assigned the accurate valuerelative to a number of the activity records assigned the inaccuratevalue; and generate and display on the graphical user interface a visualindication of the configuration accuracy of the one or more activityduration keys.
 2. The non-transitory computer-readable medium of claim1, wherein the instructions to generate the visual indication of theconfiguration accuracy further includes instructions to cause theprocess to: based on the configuration accuracy for the one or moreactivity duration keys, select a candidate duration key; and display arecommendation on the display screen to recommend the candidate durationkey for use in estimating a time duration for completing a selectedactivity type in future calculations.
 3. The non-transitorycomputer-readable medium of claim 1, further comprising instructionsthat when executed by at least the processor cause the processor to:based on the configuration accuracy from the one or more activityduration keys, select an inaccurate candidate duration key that isidentified as an inaccurate key; and generate and display arecommendation on the display to identify and recommend that theinaccurate candidate duration key be reconfigured.
 4. The non-transitorycomputer-readable medium of claim 1, wherein the instructions forassigning the accuracy value to a selected activity record furtherincludes instructions to cause the processor to: use a second thresholdvalue for the time difference that is greater that the first thresholdvalue; wherein the accuracy value for the selected activity record isassigned as: (i) the accurate value when the time difference between theestimated duration time of the activity duration key and the reportedtime duration for completing the selected activity from the selectedactivity record is between zero and the first threshold value; (ii) asatisfactory value when the time difference is between the firstthreshold value and the second threshold value; and (iii) the inaccuratevalue when the time difference is greater than second threshold value.5. The non-transitory computer-readable medium of claim 1, furthercomprising instructions that when executed by at least the processorcause the processor to control subsequent estimations for the selectedactivity type by applying a selected candidate duration key to estimatea future time duration for the selected activity type.
 6. A computingsystem, comprising: at least one processor connected to at least onememory; a non-transitory computer readable medium including instructionsthat when executed by at least the processor cause the processor to:determine a configuration accuracy of a configuration of an activityduration key, wherein the activity duration key includes an estimatedduration time for each of a plurality of activity types, the determiningcomprising: retrieving, from a database, a set of activity recordsassociated with the plurality of activity types, wherein each activityrecord identifies a reported time duration for completing acorresponding activity in a past event; compare the duration time of theactivity duration key to each reported time duration for completing acorresponding activity from each of the activity records and determininga time difference associated to each activity record; assign an accuracyvalue to each activity record based on the time difference; wherein theaccuracy value for a selected activity record is assigned as: (i) anaccurate value when the time difference less than a first thresholdvalue; and (ii) an inaccurate value when the time difference is greaterthan the first threshold value; determine the configuration accuracy ofthe configuration of the given activity duration key based at least on anumber of the activity records that were assigned the accurate valuerelative to a number of the activity records assigned the inaccuratevalue; and generate and display on the graphical user interface a visualindication of the configuration accuracy of the activity duration key.7. The computing system of claim 6, wherein the instructions to generatethe visual indication of the configuration accuracy further includesinstructions to cause the process to: display the configuration accuracydetermined for a plurality of activity duration keys; based on theconfiguration accuracy of the plurality of activity duration keys,select a candidate duration key; and display a recommendation on thedisplay screen to recommend the candidate duration key for use inestimating a time duration for completing a selected activity type infuture calculations.
 8. The computing system of claim 6, furthercomprising instructions that when executed by at least the processorcause the processor to: display the configuration accuracy determinedfor a plurality of activity duration keys; based on the configurationaccuracy of the plurality of activity duration keys, select aninaccurate candidate duration key that is identified as an inaccuratekey; and generate and display a recommendation on the display toidentify and recommend that the inaccurate candidate duration key bereconfigured.
 9. The computing system of claim 6, wherein theinstructions for combining the number of activity records includescalculating the quality of the activity duration key based at least on anumber of the activity records that were assigned the good valuerelative to a number of the activity records assigned the bad value. 10.The computing system of claim 6, wherein the configuration of theactivity duration key further includes configuration properties thatdefine grouping conditions for grouping activity types as being similaractivities.
 11. The computing system of claim 6, further comprisinginstructions that when executed by at least the processor cause theprocessor to control subsequent estimations for the selected activitytype by applying the candidate duration key to estimate a future timeduration for the selected activity type.
 12. The computing system ofclaim 6, further comprising at least one network interface configured toconnect to a network, wherein the computing system is implemented in acloud-based system.
 13. A computer-implemented method, the methodcomprising: selecting, by at least a processor accessing one or morememories, an activity duration key from a plurality of activity durationkeys; wherein each activity duration key includes a configuration with(i) configuration properties for grouping activity types as beingsimilar activities, and (ii) an estimated duration time for each of theactivity types that is an estimated time to complete a respectiveactivity type; for a given activity duration key from the one or moreactivity duration keys, retrieving, from a database, a set of activityrecords associated with a plurality of activity types that are groupedas being similar by the configuration properties of the given activityduration key, wherein each activity record identifies a reported timeduration for completing a corresponding activity in a past event;comparing the estimated duration time of the given activity duration keyto each reported time duration for completing the corresponding activityfrom the activity records and determining a time difference associatedto each activity record; assigning an accuracy value to a selectedactivity record based on the time difference as: (i) an accurate valuewhen the time difference meets a first threshold value; and (ii) aninaccurate value when the time difference does not meet the firstthreshold value; determining a configuration accuracy of theconfiguration of the given activity duration key based at least on anumber of the activity records that were assigned the accurate valuerelative to a number of the activity records assigned the inaccuratevalue; and generate and display on the graphical user interface a visualindication of the configuration accuracy of the one or more activityduration keys.
 14. The computer-implemented method of claim 13, whereingenerating the visual indication of the configuration accuracy furtherincludes: selecting, based on the configuration accuracy for the one ormore activity duration keys, a candidate duration key; and displaying arecommendation on the display screen to recommend the candidate durationkey for use in estimating a time duration for completing a selectedactivity type in future calculations.
 15. The computer-implementedmethod of claim 13, further comprising: selecting, based on theconfiguration accuracy from the one or more activity duration keys, aninaccurate candidate duration key that is identified as an inaccuratekey; and generating and displaying a recommendation on the display toidentify and recommend that the inaccurate candidate duration key bereconfigured.
 16. The computer-implemented method of claim 13, whereindetermining the configuration accuracy of the configuration of the givenactivity duration key includes: combining the number of the activityrecords that were assigned accurate value relative to the number of theactivity records assigned the inaccurate value to determine theconfiguration accuracy of a respective duration key.
 17. Thecomputer-implemented method of claim 13, wherein assigning the accuracyvalue to a selected activity record further includes: setting a secondthreshold value for the time difference that is greater that the firstthreshold value; wherein the accuracy value for the selected activityrecord is assigned as: (i) the accurate value when the time differencebetween the estimated duration time of the activity duration key and thereported time duration for completing the selected activity from theselected activity record is between zero and the first threshold value;(ii) a satisfactory value when the time difference is between the firstthreshold value and the second threshold value; and (iii) the inaccuratevalue when the time difference is greater than second threshold value.18. The computer-implemented method of claim 13, further comprisingcontrolling subsequent estimations for the selected activity type byapplying a candidate duration key to estimate a future time duration forthe selected activity type.
 19. The computer-implemented method of claim13, wherein the configuration properties for grouping activity types asbeing similar activities define grouping conditions for groupingactivity types as being similar activities.
 20. The computer-implementedmethod of claim 13, further comprising based on the quality for each ofthe duration keys, selecting an inaccurate candidate duration key thatis identified as an inaccurate key; and generating and displaying asecond recommendation on the display to identify and recommend that theinaccurate candidate duration key be reconfigured.